package bb.lanxing.model.database;

import android.os.Parcelable;

import java.util.List;

import bb.lanxing.model.json.TrackSegment;
import bb.lanxing.model.json.WorkoutExtraInfo;
import bb.lanxing.util.Enums;


public interface IWorkout extends Parcelable {
    public static final int CATEGORY_NORMAL = 0;
    public static final int CATEGORY_MERGE = 1;
    public static final int SUB_TYPE_GENERIC = 0;
    public static final int SUB_TYPE_TREADMILL = 1;
    public static final int SUB_TYPE_STREET = 2;
    public static final int SUB_TYPE_TRAIL = 3;
    public static final int SUB_TYPE_TRACK = 4;
    public static final int SUB_TYPE_SPIN = 5;
    public static final int SUB_TYPE_INDOOR_CYCLING = 6;
    public static final int SUB_TYPE_ROAD = 7;

    void checkPacePoint();

    int getAvgCadence();

    int getAvgHeartrate();

    double getAvgPower();

    double getAvgSpeed();

    List<ITrackPoint> getByWorkout();

    List<ITrackPoint> getByWorkoutForMap();

    List<ITrackPoint> getByWorkoutForMap(int i);

    List<ITrackPoint> getByWorkoutForStartEndTimeSample(long j, long j2, int i, int i2);

    List<ITrackPoint> getByWorkoutForWatermark();

    int getCadence();

    long getCadenceCountByWorkout();

    int getCadenceSource();

    long getCadenceSumByWorkout();

    int getCalorie();

    int getCategory();

    int getCommentCount();

    long getCountByWorkout();

    long getCountInCadenceSection(int i, int i2);

    long getCountInHeartrateSection(int i, int i2);

    long getCountInPowerSection(int i, int i2);

    int getCreditsInt();

    String getDescription();

    double getDistance();

    double getDownDistance();

    long getDownDuration();

    long getDuration();

    float getElevationGain();

    float getElevationLoss();

    String getEncodingPoints();

    int getEndCadence();

    long getEndTime();

    int getEndWheel();

    double getFlatDistance();

    long getFlatDuration();

    int getHeartSource();

    int getHeartrate();

    long getHeartrateCountByWorkout();

    Long getId();

    int getLikeCount();

    int getLocSource();

    int getMapHidden();

    int getMapId();

    int getMaxCadence();

    int getMaxGrade();

    int getMaxHeartrate();

    double getMaxPower();

    double getMaxSpeed();

    int getMaxWheelRevolution();

    String getMergeRecord();

    int getMinGrade();

    String getPoi();

    long getPointCounts();

    void setPointCounts(long pointCounts);

    long getPowerCountByWorkout();

    double getPowerFTP();

    double getPowerIF();

    double getPowerNP();

    int getPowerSource();

    double getPowerTSS();

    double getPowerVI();

    String getSegmentCa();

    String getSegmentHr();

    String getSegmentIndex();

    String getSegmentKM();

    String getSegmentSport();

    long getServerId();

    String getSlopeGradeMax();

    int getSport();

    int getStartCadence();

    long getStartTime();

    int getStartWheel();

    int getStep();

    String getThreedWorkout();

    String getTitle();

    List<ITrackPoint> getTrackPointsForChart();

    List<ITrackPoint> getTrackPointsForChartAbove0Speed();

    List<ITrackPoint> getTrackPointsForChartAbove30Heartrate();

    List<TrackSegment> getTrackSegments();

    double getUpDistance();

    long getUpDuration();

    Enums.UploadStatus getUploadStatus();

    long getUserId();

    String getUuid();

    WorkoutExtraInfo getWorkoutExtraInfo();

    boolean hasMatchedSegment();

    boolean isExport();

    boolean isLike();

    boolean isThreedWorkout();

    boolean isValid();

//    long save();
    boolean save();

    void setAvgPower(double d);

    void setCadence(int i);

    void setCommentCount(int i);

    void setIsLike(boolean z);

    void setLikeCount(int i);

    void setMapId(int i);

    void setMaxPower(double d);

    void setMaxSpeed(double d);

    void setPowerFTP(double d);

    void setPowerIF(double d);

    void setPowerNP(double d);

    void setPowerSource(int i);

    void setPowerTSS(double d);

    void setPowerVI(double d);

    void setSegmentCa(String str);

    void setSegmentHr(String str);

    void setThreedWorkout(String str);

    boolean upDatePointPower(List<Float> list, List<Float> list2);
}
